iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
Software Development

燃燒大三的成果發表系列 第 3

燃燒大三的成果發表第三天 - tuple、Dictionary、set

  • 分享至 

  • xImage
  •  

今天來分享除了int、string,python 基本的資料類型

tuple(元組)

  1. 有順序的
  2. 無法被修改

tuple基本上沒有什麼操作,非常棒,唯一要記住的是,tuple宣告完就不能改了,所以要改的資料,千萬不要用tuple宣告。

Dictionary(字典)

  1. 沒有順序的
  2. 由鍵(key)與值(value)組成,一個key一個value(key不能重複)

字典宣告的方式,你可以

  1. 直接打好打滿 a = {"鐵": 1, "人": 2, "賽": 3}
  2. 用dict()打好打滿,不過這邊key不能給數字a = dict(鐵= 1, 人= 2, 賽= 3)
  3. 將兩筆可迭代資料透過zip組成tuple
    key = ("鐵", "人", "賽")
    value = (1, 2, 3)
    a = dict(zip(key, value))
    

要修改資料可以這樣

  1. 針對有key的a["鐵"] = 2 像這樣a["沒key"] = 4沒有這個key他會將這筆key & value直接加上去
    {'鐵': 2, '人': 2, '賽': 3, '沒key': 4}
  2. a.update({"鐵": 2, "沒key": 4})跟第一點一樣如果沒有這個key值就會將這筆key & value直接加上去
    {'鐵': 2, '人': 2, '賽': 3, '沒key': 4}

要取資料可以這樣

  1. a["鐵"]:針對指定的key取值,但是如果字典裡面沒有這key的話,會報KeyError
  2. a.get("鐵", default):get可以避免取值報錯的情況,如果使用get取一個沒有的key,我們可以在第二個參數上寫上預設值
  3. a.setdefault("鐵", 1):setdefault也可以避免取值報錯,如果使用get取一個沒有的key,那就會把參數當作key & value新增一筆資料

我們可以利用for迴圈,對Dictionary的資料一一取出,像是這樣:

a = {"鐵": 1, "人": 2, "賽": 3}
for i in a.items():
    print(i)
# ('鐵', 1)
# ('人', 2)
# ('賽', 3)

透過items能夠將Dictionary的資料轉成list裡面用tuple包起來,會長這樣[('鐵', 1), ('人', 2), ('賽', 3)],然後我們在用for迴圈一一取出,我們也可以一一取出key跟value,像是這樣:

a = {"鐵": 1, "人": 2, "賽": 3}
for key, value in a.items():
    print("key: %s, value: %s" % (key, value))
# key: 鐵, value: 1
# key: 人, value: 2
# key: 賽, value: 3

這個技巧在我的經驗裡面是很常用的,因為我們會常常想要Dictionary整筆資料,又能同時取得每一筆索引的key & value做處理。

set(集合)

  1. 沒有順序的
  2. 不可重複的
a = {x for x in range(5)}
b = {x for x in range(0, 6, 2)}
print(a - b)  # 差集:兩個集合不重疊的部分
# {1, 3}
print(a | b)  # 聯集:兩個集合相加
# {0, 1, 2, 3, 4}
print(a & b)  # 交集:兩個集合重疊的部分
# {0, 2, 4}

今天分享的都是一些基本上的操作,很多其實在我的經驗中也很少應用,基本上就是

  1. 記得每個資料類型的特性,能夠快速的宣告
  2. 用推導式節省空間,增加可讀性是最好
  3. 如何尋訪這些資料類型的每一筆資料

更細節的部分,可能需要遇到的時候才會更清楚明白,明天我要跟大家來分享pep8。


上一篇
燃燒大三的成果發表第二天 - list
下一篇
燃燒大三的成果發表第四天 - pep8
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言